# File：orm_test.py
# Author：信思智学
# Date ：2025/8/11 10:32
# Info：

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoORM20250807.settings")
    import django
    django.setup()
    from app.models import Book, Press, BookType
    # 从 多方 查找 一方
    # book = Book.objects.get(id=2)
    # print(book)
    # print(book.press.pressname)

    # 从 一方 查找 多方   （查询id为1的出版社对应的所有图书）
    # booklist = Book.objects.filter(press_id=1)
    # print(booklist)

    # presslist = Press.objects.get(pressname="清华大学出版社").id
    # print(presslist)

    # 从 一方 查找 多方  （查询清华大学出版社对应的所有图书）  发送2条sql语句
    # select * from app_book where press_id = (select id from app_press where pressname = "清华大学出版社")
    # booklist = Book.objects.filter(press_id=Press.objects.get(pressname__contains="人民").id)
    # print(booklist)

    # 从 一方 查找 多方  （查询清华大学出版社对应的所有图书）  发送1条sql语句
    # 在外键字段上追加双下划线代表 跨表联查
    # booklist = Book.objects.filter(press__pressname__contains="清华")
    # print(booklist)

    # 图书名称 出版社名称   .values("自己的字段“,"外键字段__名称")
    # booklist = Book.objects.all().values("bookname","press__pressname")
    # print(booklist)


    # 反向查询 （从一方作为发起者查询多方数据）
    # 方式一： 一方对象名称.多方类名小写_set.all()  发送多条sql
    # 方式二： 在外键配置的属性中，追加关联字段  press = models.ForeignKey(to="Press",related_name="books",

    # press = Press.objects.get(pressname="清华大学出版社")
    # print(press)
    # print(press.book_set.all())

    press = Press.objects.get(books__bookname="鹿鼎记")
    print(press)
















